//
//  EmoticonPackage.swift
//  Status
//
//  Created by Kylin on 16/3/27.
//  Copyright © 2016年 Kylin. All rights reserved.
//

import UIKit

class EmoticonPackage : NSObject {
    // MARK:- 自定义属性
    var emoticons : [Emoticon] = [Emoticon]()

    // MARK:- 重写构造函数
 
    init(id : String) {
        super.init()
        
        //添加对应的数据表情包
        setupEmoticonPackages(id)
    }
}

// MARK:- 添加各表情包数据
extension EmoticonPackage {
    private func setupEmoticonPackages (id : String){
        // 1.判断是否最近表情组
        if id == "" {
            addEmptyEmoticon()
            return
        }
      // 2.获取id对应的info.plist文件的路径
        guard let infoPath = NSBundle.mainBundle().pathForResource("\(id)/info.plist", ofType: nil, inDirectory: "Emoticons.bundle") else {
            return
        }
        
        // 3.取出info.plist中数据
        guard let dictArray = NSArray(contentsOfFile: infoPath) as? [[String : AnyObject]] else {
            return
        }
        
        // 4.遍历字典数组
        var index = 0
        for var dict in dictArray {
            // 在swift 中++不能有空格
            index += 1
            // 拼接文件的全路径
            if let png = dict["png"] as? String {
                dict["png"] = "\(id)/" + png
            }
            // 4.1将字典转换成模型
            emoticons.append(Emoticon(dict: dict))
            // 4.2.如果添加表情的个数%20 == 0,添加一个删除按钮
            if index % 20 == 0 {
                emoticons.append(Emoticon(isRemove: true))
            }
       
        }
        // 5.添加空白表情
        self.addEmptyEmoticon()
    }
    
    // 添加空白表情
    private func addEmptyEmoticon() {
        // 1.请求该组中剩余的个数
        let leftCount = emoticons.count % 21
        
        // 2.如果==0,表示没有剩余,则不需要添加
        if leftCount == 0 && emoticons.count != 0{
            return
        }
        
         // 3.添加空白表情
        for _ in leftCount..<20 {
            emoticons.append(Emoticon(isEmpty: true))
        }
        // 4.添加删除按钮
        emoticons.append(Emoticon(isRemove: true))
    }
}












